#ifndef CCMD_H
#define CCMD_H

#include <boost/program_options.hpp>
#include <string>
#include <iostream>

namespace bpo = boost::program_options;

class CCFile;

class CCmd
{
public:
	CCmd(int argc, char* argv[]);
	~CCmd(void);

	std::string compiler() const;
	CCFile * input() const;
	std::string output() const;
	std::string commandLine() const;
	std::vector< std::string > compilerFlags() const;
	std::vector< std::string > includeDirectories() const;

private:
	void parseInput( int argc, char* argv[] );

private:
	std::vector<std::string> m_IDirectories;
	std::vector<std::string> m_compilerFlags;
	CCFile * m_inputFile;
	std::string m_outputFile;
	std::string m_compiler;

	bpo::options_description m_compilerOpt;
	bpo::positional_options_description m_compilerInputOpt;
	bpo::positional_options_description m_compilerPositionalOpt;
	bpo::variables_map m_varMapOpt;
	std::vector<std::string> m_commandLine;
};


#endif